package com.weiyi.chat.common;

import android.app.Activity;
import android.widget.Toast;

import com.weiyi.chat.utils.SystemUtils;
import com.weiyi.chat.view.widget.ProgressDialogs;
import com.zhy.http.okhttp.callback.StringCallback;

import org.json.JSONException;
import org.json.JSONObject;

import okhttp3.Call;
import okhttp3.Request;


/**
 * 自定义的一个callBack类  联网后的异步回调
 */
public abstract class MyStringCallBack extends StringCallback {

    private final Activity activity;
    private ProgressDialogs dialog;

    public MyStringCallBack(Activity activity) {
        this.activity = activity;
        dialog = new ProgressDialogs(activity);//创建自定义Dialog对象
    }

    @Override
    public void onResponse(String response, int id) {
        JSONObject jsonObject = null;
        try {
            jsonObject = new JSONObject(response);
            if (jsonObject.getInt("code") == 200){
                onRequestSucess(response);
            }else{
                String message = jsonObject.getString("errmsg");
                onRequstFail(message == null ? "获取失败" : message);
            }
        } catch (JSONException e) {
            e.printStackTrace();
            onRequstFail("系统数据异常");
        }
    }

    /**
     * 当请求成功
     * @param response
     */
    public abstract void onRequestSucess(String response);

    /**
     * 当请求失败
     * @param errorInfo
     */
    public abstract void onRequstFail(String errorInfo);





    /**
     * 请求前的回调
     * @param request
     */
    @Override
    public void onBefore(Request request, int id) {
        super.onBefore(request, id);
        //网络请求前显示对话框
        dialog.showDialog();//打开加载的对话框

    }

    /**
     * 失败的回调
     */
    @Override
    public void onError(Call call, Exception e, int id) {

        boolean b = SystemUtils.checkNetWork(activity);//判断是否是因为网络问题导致的错误
        if (b){
            onRequstFail("刷新失败!!!");
            return;
        }
        onRequstFail("网络连接失败! 请检查网络!!!");
    }

    /**
     * 请求网络结束后，UI线程
     */

    @Override
    public void onAfter(int id) {
        super.onAfter(id);
        //网络请求结束后关闭对话框
        dialog.closeDialog();
    }
}
